#include <vector>
#include <string>
#include <algorithm>
#include <iostream>

using namespace std;

/*
练习一
分割字符串：把一个字符串，从中间隔开，变成一个字符串数组

splitString("abcd") => ["ab", "cd"]
*/
// s 中包含偶数个字符
// vector<int>
// vector<string>
// vector<bool>
vector<string> splitString(const string &s) {
  // 1. 如何获取 s 的长度？
  // s.size()
  // 2. s 的起始位置 0，结束位置 s.size() - 1
  // a b c d
  //     ^m2 (0 + 3) / 2 + 1
  // 0     3 (s.size() - 1)
  // b     e
  // b..m
  // m..e

}

/*
练习2
给定一个字符串，把它反过来。
reverseString("abc") => "cba"
reverseString("Hello World!") => "!dlroW olleH"
*/
string reverseString(const string &s) {
  // a b c d e
  // 0 1 2 3 4 (s.size() - 1)

  for (int i = s.size() - 1; i >= 0; --i) {

  }
}

/*
练习 3
snake case (蛇形命名): 编程中的一种命名方式，用 _ 连接小写字母的方法
int ab_cd_ef = 10;
int hello_world = 10
string blue_sky = "BS";

CamelCase (驼形命名): 每一个单词的首字母大写的命名方法
int AbCdEf = 10
int HelloWolrd = 10;
string BlueSky = "BS";

toCamelCase("ab_cd_ef") => AbCdEf
toCamelCase("hello_world") => HelloWorld
*/

// 假设传递的 snake_case 一定是一个格式正确的字符串
string toCamelCase(const string &snake_case) {
  // a b _ c d _ e f
  //                ^
  // Ab+toupper('c')+d+toupper('e')+f => abCdEf

  // toupper('c') => 'C'
}

/*
练习 4
给定一个字符串 str 和一个字符 c
返回 c 在 str 中第二次出现的位置
secondIndex("Hello World!", 'l'); => 3
secondIndex("AABBCCD", 'C'); => 5
secondIndex("AABBCCD", 'D'); => -1 没有第二次出现
*/
int secondIndex(const string &str)


int main(int argc, char const *argv[])
{
  /* code */
  return 0;
}
